def outer(fun):#将house当做fun参数传入
    def wapper(*args,**kwargs):#不管传入什么类型变量都像这样写
        fun(*args,**kwargs)
        print('刷漆')
        print("新房")
    return wapper
@outer#添加装饰器@
def house(address):
    print('房子的地址在：{}是一个毛坯房...'.format(address))
@outer
def chang(adress,area):
    print('房子的地址在：{}，是一个毛坯房，面积：{}平米'.format(adress,area))
@outer
def hotel(name,address,area=40):
    print('酒店名称：{}，酒店地址在：{}，建筑面积：{}平米'.format(name,address,area))

house('北京')
print('*'*20)
chang('北京',1000)
print('*'*20)
hotel(name='全季酒店',address='北京国贸')
print('*'*20)



#带返回值得装饰器
def decorate(fun):
    '''

    :param fun:
    :return:
    '''
    def wapper(*args,**kwargs):
        r=fun(*args,**kwargs)#接受house的返回值
        print('装修预计费用：{}元'.format(r))
        print('刷漆')
        print("新房")
        return 600000#wapper的返回值

    return wapper
@decorate
def house():
    print('我是一个毛坯房')
    return 50000

r=house()#接收wapper的返回值
print(r)
